package com.operator.Activitys.activity;

import android.os.Handler;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.google.gson.Gson;
import com.operator.Activitys.R;
import com.operator.Activitys.activity.base.BaseActivity;
import com.operator.Activitys.bean.State;
import com.operator.Activitys.bean.User;
import com.operator.Activitys.http.manager.UserManager;
import com.operator.Activitys.utils.CheckUtils;
import com.operator.Activitys.utils.Constant;
import com.operator.Activitys.utils.JumperUtils;
import com.operator.Activitys.utils.ToastUtils;
import com.zhy.autolayout.AutoRelativeLayout;

import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;
import org.simple.eventbus.ThreadMode;

import butterknife.Bind;

/**
 * 项目名称：金泽云 手机app
 * 类描述：修改密码页面
 * 创建人：张飞祥
 * 创建时间：2018/6/15 16:31
 * 修改人：张飞祥
 * 修改时间：2018/6/15 16:31
 * 修改备注：
 */
public class PwdUpdateActivity extends BaseActivity {

    //返回按钮
    @Bind(R.id.iv_return)
    ImageView ivReturn;
    //标题
    @Bind(R.id.tv_title)
    TextView tvTitle;
    //标题总布局
    @Bind(R.id.app_bar_layout)
    AutoRelativeLayout appBarLayout;
    //旧密码
    @Bind(R.id.et_pwd_used)
    EditText etPwdUsed;
    //新密码
    @Bind(R.id.et_pwd_new)
    EditText etPwdNew;
    //确认新密码
    @Bind(R.id.et_pwd_confirm)
    EditText etPwdConfirm;

    @Bind(R.id.btn_update_pwd)
    Button btnUpdatePwd;

    //TODO 初始化网络请求
    public UserManager mApiManager;

    //内存中用户实体
    protected User mACacheUser = null;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_pwd_update);
        //网络请求接口 常驻方法
        mApiManager = mApiManager.getUserApiManager(this,this.getTaskId());
        //获取内存用户实体
        Gson gson = new Gson();
        mACacheUser = gson.fromJson(mACache.getAsJSONObject(Constant.CACHE_USER) + "", User.class);

        //设置标题
        tvTitle.setText("修改密码");
        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
        //设置状态栏 背景颜色
        appBarLayout.setBackgroundResource(R.color.color_bg_blue);
    }

    @Override
    protected void initData() {

        /**
         * 开始 修改密码
         */
        btnUpdatePwd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //开始网络请求
                setUpdatePwdHttp();
            }
        });
    }

    /**
     * 开始修改密码 网络请求
     */
    private void setUpdatePwdHttp(){
        //旧密码
        String usedPwd = etPwdUsed.getText().toString();
        //新密码
        String newPwd = etPwdNew.getText().toString();
        //确认新密码
        String confirmNewPwd = etPwdConfirm.getText().toString();

        /**
         * 1.判断每个字段非空
         * 2.判断两次密码是否一致
         * 3.判断旧密码格式是否正确
         * 4.判断新密码格式是否正确
         * 5.开始网络请求
         */
        if (usedPwd.equals("") || newPwd.equals("") || confirmNewPwd.equals("")) {
            ToastUtils.showShort(this, "请您认真填写，内容不许为空！");
        }else if (!newPwd.equals(confirmNewPwd)) {
            ToastUtils.showShort(this, "两次密码输入不一致！");
        }else if (!CheckUtils.isPassword(usedPwd)) {
            ToastUtils.showShort(this, "旧密码格式不正确！");
        }else if (!CheckUtils.isPassword(newPwd)) {
            ToastUtils.showShort(this, "新密码格式不正确！");
        }else{
            initShowTimeDialog("正在修改，请稍后....", this);
            //开始网络请求
            mApiManager.userUpdateLoginPwd(mACacheUser.getId(),usedPwd,newPwd);
        }
    }

    /**
     * 网络请求 修改登录密码 报错
     */
    @Subscriber(tag = Constant.BUS_MY_UPDATE_LOGIN_PWD_ERROR, mode = ThreadMode.MAIN)
    public void initUpdateLoginPwdError(String strError) {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //隐藏dialog
                timeDialog.dismiss();
                //弹出相应的提示
                ToastUtils.showShort(PwdUpdateActivity.this,"网络连接不稳定，请稍后重试！！！");
            }
        }, 1000);
    }

    /**
     * 网络请求 修改登录密码
     */
    @Subscriber(tag = Constant.BUS_MY_UPDATE_LOGIN_PWD, mode = ThreadMode.MAIN)
    public void initUpdateLoginPwd(final State state) {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //隐藏dialog
                timeDialog.dismiss();
                //TODO 网络请求业务逻辑判断
                if (state.getState().equals("1")) {
                    //提示 dialog
                    MaterialDialog mMsgDialog = new MaterialDialog.Builder(PwdUpdateActivity.this)
                            .title("修改成功")
                            .content("恭喜您，密码已修改成功，请重新登录吧！")
                            .positiveText("立即登录")
                            .onPositive(new MaterialDialog.SingleButtonCallback() {
                                @Override
                                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                    //跳转登录页面
                                    JumperUtils.JumpTo(PwdUpdateActivity.this,LoginActivity.class);
                                    //通知主页面退出操作
                                    EventBus.getDefault().post("",Constant.BUS_EXIT_MAIN);
                                    //销毁当前页面
                                    finish();
                                }
                            }).show();
                    // 设置点击屏幕Dialog不消失
                    mMsgDialog.setCanceledOnTouchOutside(false);
                    //取消Back键监听
                    mMsgDialog.setCancelable(false);
                }else{
                    //弹出相应的提示
                    ToastUtils.showShort(PwdUpdateActivity.this, state.getMsg());
                }
            }
        }, 1000);
    }
}
